home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / esc.jar / com / extensibility / esc / SimpleTreeModel.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-06-30  |  8.0 KB  |  278 lines

  1. package com.extensibility.esc;
  2.  
  3. import com.extensibility.app.BaseDocument;
  4. import com.extensibility.app.Desktop;
  5. import com.extensibility.app.UI;
  6. import java.awt.Cursor;
  7. import java.io.File;
  8. import java.text.DateFormat;
  9. import java.util.Date;
  10. import java.util.Enumeration;
  11. import java.util.EventObject;
  12. import java.util.Vector;
  13. import javax.swing.Icon;
  14. import javax.swing.ImageIcon;
  15. import javax.swing.JTree;
  16. import javax.swing.event.TreeExpansionEvent;
  17. import javax.swing.event.TreeExpansionListener;
  18. import javax.swing.tree.TreePath;
  19.  
  20. public class SimpleTreeModel extends AbstractTreeTableModel implements TreeTableModel, TreeExpansionListener {
  21.    protected String[] cNames = new String[]{UI.getString("esc.escwindow.table.header.valid"), UI.getString("esc.escwindow.table.header.name"), UI.getString("esc.escwindow.table.header.type"), UI.getString("esc.escwindow.table.header.date"), UI.getString("esc.escwindow.table.header.path")};
  22.    protected Class[] cTypes = new Class[]{Class.forName("javax.swing.ImageIcon"), Class.forName("com.extensibility.esc.TreeTableModel"), Class.forName("java.lang.String"), Class.forName("java.lang.String"), Class.forName("java.lang.String")};
  23.    private Icon icoSchValid;
  24.    private Icon icoSchNotValid;
  25.    private Icon icoSchNoState;
  26.    private Icon icoDir;
  27.    ESCDocument doc;
  28.  
  29.    public SimpleTreeModel(TreeNode var1) {
  30.       super(var1);
  31.    }
  32.  
  33.    public SimpleTreeModel(ESCDocument var1) {
  34.       super(new TreeNode(String.valueOf(String.valueOf("<").concat(String.valueOf(((BaseDocument)var1).getName()))).concat(String.valueOf(">"))));
  35.       this.icoSchValid = UI.getIcon("validate_icon_clear.gif");
  36.       this.icoSchNotValid = UI.getIcon("not_validate_graphic.gif");
  37.       this.icoSchNoState = UI.getIcon("what_is_this_graphic.gif");
  38.       this.icoDir = new ImageIcon("");
  39.       this.doc = var1;
  40.       this.initialize();
  41.    }
  42.  
  43.    public void initialize() {
  44.       Enumeration var1 = this.doc.getFiles().elements();
  45.  
  46.       while(var1 != null && var1.hasMoreElements()) {
  47.          ESCDocument.ESCFile var2 = (ESCDocument.ESCFile)var1.nextElement();
  48.          TreeNode var3 = new TreeNode(var2, (TreeNode)((AbstractTreeTableModel)this).getRoot());
  49.          if (var2.isUserSelected()) {
  50.             this.addNode(((AbstractTreeTableModel)this).getRoot(), var3);
  51.          }
  52.       }
  53.  
  54.    }
  55.  
  56.    public Object addNode(Object var1, Object var2) {
  57.       if (var1 instanceof TreeNode) {
  58.          TreeNode var3 = (TreeNode)var1;
  59.          if (var2 instanceof TreeNode) {
  60.             var3.addChild(var2);
  61.             ((AbstractTreeTableModel)this).fireTreeNodesInserted(this, this.getPathToRoot(var3), new int[]{var3.getChildCount() - 1}, new Object[]{var2});
  62.          }
  63.  
  64.          return var3;
  65.       } else {
  66.          return null;
  67.       }
  68.    }
  69.  
  70.    public void removeNode(Object[] var1) {
  71.       int var2 = var1.length;
  72.       if (var2 > 1) {
  73.          this.removeNode(var1[var2 - 1], var1[var2 - 2]);
  74.       }
  75.  
  76.    }
  77.  
  78.    public void removeNode(Object var1, Object var2) {
  79.       if (var1 instanceof TreeNode) {
  80.          TreeNode var3 = (TreeNode)var1;
  81.          if (var2 instanceof TreeNode) {
  82.             var3.removeChild((TreeNode)var2);
  83.          }
  84.       }
  85.  
  86.    }
  87.  
  88.    public void removeAll() {
  89.       ((TreeNode)super.root).removeAllChildren();
  90.    }
  91.  
  92.    public Object[] getPathToRoot(Object var1) {
  93.       if (!(var1 instanceof TreeNode)) {
  94.          return null;
  95.       } else {
  96.          Vector var2 = new Vector(10);
  97.          var2.addElement(var1);
  98.  
  99.          for(TreeNode var3 = ((TreeNode)var1).getParent(); var3 != null; var3 = var3.getParent()) {
  100.             var2.addElement(var3);
  101.          }
  102.  
  103.          int var4 = var2.size();
  104.          Object[] var5 = new Object[var4];
  105.  
  106.          for(int var6 = var4 - 1; var6 >= 0; --var6) {
  107.             var5[var4 - var6 - 1] = var2.elementAt(var6);
  108.          }
  109.  
  110.          return var5;
  111.       }
  112.    }
  113.  
  114.    public Object getChild(Object var1, String var2) {
  115.       return var1 instanceof TreeNode ? ((TreeNode)var1).getChild(var2) : null;
  116.    }
  117.  
  118.    protected ESCDocument.ESCFile getFile(Object var1) {
  119.       if (var1 != null && var1 instanceof TreeNode) {
  120.          TreeNode var2 = (TreeNode)var1;
  121.          return var2.getFile();
  122.       } else {
  123.          return null;
  124.       }
  125.    }
  126.  
  127.    public Object[] getChildren(Object var1) {
  128.       TreeNode var2 = (TreeNode)var1;
  129.       return var2.getChildren();
  130.    }
  131.  
  132.    public int getChildCount(Object var1) {
  133.       Object[] var2 = this.getChildren(var1);
  134.       return var2 == null ? 0 : var2.length;
  135.    }
  136.  
  137.    public Object getChild(Object var1, int var2) {
  138.       return this.getChildren(var1)[var2];
  139.    }
  140.  
  141.    public boolean isLeaf(Object var1) {
  142.       ESCDocument.ESCFile var2 = this.getFile(var1);
  143.       return var2 == null ? false : ((File)var2).isFile() || !((File)var2).exists();
  144.    }
  145.  
  146.    public int getColumnCount() {
  147.       return this.cNames.length;
  148.    }
  149.  
  150.    public String getColumnName(int var1) {
  151.       return this.cNames[var1];
  152.    }
  153.  
  154.    public Class getColumnClass(int var1) {
  155.       return this.cTypes[var1];
  156.    }
  157.  
  158.    public Object getValueAt(Object var1, int var2) {
  159.       TreeNode var3 = (TreeNode)var1;
  160.       ESCDocument.ESCFile var4 = this.getFile(var1);
  161.       var4 = this.doc.factoryESCFile(var4, true);
  162.       if (!((File)var4).exists() && !var4.isUserSelected()) {
  163.          TreeNode var5;
  164.          for(var5 = var3.getParent(); !var5.getFile().exists() && !var5.equals((TreeNode)super.root); var5 = var5.getParent()) {
  165.          }
  166.  
  167.          var5.removeChild(var3);
  168.          this.removeFileFromDoc(var4);
  169.          System.out.println("  fireTreeStructureChanged  because  of  !file.exists() && !file.isUserSelected() ");
  170.       }
  171.  
  172.       try {
  173.          switch (var2) {
  174.             case 0:
  175.                if (!((File)var4).exists()) {
  176.                   Icon var14 = this.icoSchNoState;
  177.                   return var14;
  178.                }
  179.  
  180.                if (((File)var4).isFile()) {
  181.                   Icon var13 = var4.isVirgin() ? this.icoSchNoState : (var4.isValid() ? this.icoSchValid : this.icoSchNotValid);
  182.                   return var13;
  183.                }
  184.  
  185.                Icon var12 = this.icoDir;
  186.                return var12;
  187.             case 1:
  188.                String var6 = var3.isRoot() ? "" : ((File)var4).getName();
  189.                return var6;
  190.             case 2:
  191.                String var7 = var3.isRoot() ? "Project" : var4.getInfo();
  192.                return var7;
  193.             case 3:
  194.                if (var3.isRoot()) {
  195.                   String var16 = "";
  196.                   return var16;
  197.                }
  198.  
  199.                if (((File)var4).exists() && !((File)var4).isDirectory()) {
  200.                   String var15 = var4.isVirgin() ? "" : this.getDateFormated(var4.getValidationDate());
  201.                   return var15;
  202.                }
  203.  
  204.                String var8 = "";
  205.                return var8;
  206.             case 4:
  207.                String var9 = var3.isRoot() ? "" : ((File)var4).getAbsolutePath();
  208.                return var9;
  209.          }
  210.       } catch (SecurityException var10) {
  211.       }
  212.  
  213.       return null;
  214.    }
  215.  
  216.    public void treeCollapsed(TreeExpansionEvent var1) {
  217.       TreePath var2 = var1.getPath();
  218.       TreeNode var3 = (TreeNode)var2.getLastPathComponent();
  219.       if (!var3.equals((TreeNode)((AbstractTreeTableModel)this).getRoot())) {
  220.          ESCDocument.ESCFile var4 = this.getFile(var3);
  221.          var4.setExpanded(false);
  222.       }
  223.  
  224.    }
  225.  
  226.    public void treeExpanded(TreeExpansionEvent var1) {
  227.       Object var2 = ((EventObject)var1).getSource();
  228.       TreePath var3 = var1.getPath();
  229.       TreeNode var4 = (TreeNode)var3.getLastPathComponent();
  230.       if (!var4.equals((TreeNode)((AbstractTreeTableModel)this).getRoot())) {
  231.          Object[] var5 = var4.getChildren();
  232.  
  233.          for(int var6 = 0; var6 < var5.length; ++var6) {
  234.             ESCDocument.ESCFile var7 = ((TreeNode)var5[var6]).getFile();
  235.             if (!((File)var7).exists()) {
  236.                this.removeFileFromDoc(var7);
  237.                ((AbstractTreeTableModel)this).fireTreeNodesRemoved(this, this.getPathToRoot(var4), new int[]{var6}, new Object[]{var5[var6]});
  238.                var4.removeChild(var5[var6]);
  239.             }
  240.          }
  241.  
  242.          ESCWindow var8 = (ESCWindow)Desktop.getFrontDocWindow();
  243.          var8.setCursor(Cursor.getPredefinedCursor(3));
  244.          var8.setBlockCursor(true);
  245.          this.expandNode(var4, var4, var4.getFile().isRecursive());
  246.          ((JTree)var2).setSelectionPath(var3);
  247.          var8.setBlockCursor(false);
  248.          var8.setCursor(Cursor.getPredefinedCursor(0));
  249.       }
  250.  
  251.    }
  252.  
  253.    public void expandNode(TreeNode var1, TreeNode var2, boolean var3) {
  254.       ESCDocument.ESCFile var4 = this.getFile(var1);
  255.       var4.setExpanded(true);
  256.       Vector var5 = FileHandler.list(var4, ESCApplication.getSupportedFlavors());
  257.  
  258.       for(int var6 = 0; var6 < var5.size(); ++var6) {
  259.          ESCDocument.ESCFile var7 = this.doc.factoryESCFile((File)var5.elementAt(var6), true);
  260.          TreeNode var8 = new TreeNode(var7, var1);
  261.          if (((File)var7).isFile() && !var2.containsChild(var8.getID())) {
  262.             this.addNode(var2, var8);
  263.          } else if (((File)var7).isDirectory() && var3) {
  264.             this.expandNode(new TreeNode(var7, var8), var2, var3);
  265.          }
  266.       }
  267.  
  268.    }
  269.  
  270.    protected String getDateFormated(Date var1) {
  271.       return String.valueOf(String.valueOf(DateFormat.getDateInstance(3).format(var1)).concat(String.valueOf(" "))).concat(String.valueOf(DateFormat.getTimeInstance(3).format(var1)));
  272.    }
  273.  
  274.    private void removeFileFromDoc(ESCDocument.ESCFile var1) {
  275.       this.doc.removeFile(((File)var1).getAbsolutePath());
  276.    }
  277. }
  278.